package microsoft;

import java.util.ArrayList;
import java.util.List;

public class Test2 {
    public static void main(String[] args) {
        System.out.println(new Test2().solution("WWW"));
    }

    /**
     * S中包括红色和白色，求将红色球移动到一起的最小移动次数
     * 将所有的球都移动到中间位置
     */
    public int solution(String S) {
        // write your code in Java 8 (Java SE 8)
        long res = 0;
        List<Integer> indexes = new ArrayList<>();
        for (int i = 0; i < S.length(); i++) {
            if (S.charAt(i) == 'R') {
                indexes.add(i);
            }
        }
        if (indexes.size() == 0) return 0;
        int mid = indexes.get(indexes.size() / 2);
        int left = mid - 1, right = mid + 1;
        for (int i = indexes.size() / 2 + 1; i < indexes.size(); i++) {
            res += indexes.get(i) - right;
            right++;
        }
        for (int i = indexes.size() / 2 - 1; i >= 0; i--) {
            res += left - indexes.get(i);
            left--;
        }
        return res > 1e9 ? -1 : (int) res;
    }
}
